Redux-thunk中间件
安装
npm install –save redux-thunk
使用
1 | import { createStore, applyMiddleware, compose } from 'redux' |
作用:
Redux-thunk是redux的一个中间件。在我们以前书写action的时候,action的返回数据的格式为一个js的对象,但是当我们使用Redux-thunk之后,action的返回数据可以是一个函数,在这个函数中我们可以进行一些逻辑比较复杂的操作,或者发起一个异步请求等。避免直接在容器组件中书写造成代码的混乱。
actionCreator中1
2
3
4
5
6
7
8
9
10
11
12
13
14export const getTodoListData = () => {
// 当action返回值为一个函数的时候,这里可以接受一个dispatch
return (dispatch) => {
const url = 'http://www.mocky.io/v2/5ba88d043200005f00e2eafb'
axios.get(url).then((res)=> {
// 获取到数据之后,还是按照原来的方法触发action改变数据
const action = initListDataAction(res.data)
dispatch(action)
}).catch(()=>{
alert('HTTP 请求失败!')
})
}
}
容器组件TodoList中1
2
3
4
5componentDidMount(){
// 这里触发action 执行异步操作去请求数据
const action = getTodoListData()
store.dispatch(action)
}
这样我们就将逻辑代码抽取到action中去了,而不是在容器组件中
https://github.com/rexyan/simple_react/tree/Redux-thunk%E4%B8%AD%E9%97%B4%E4%BB%B6